Device File(Device node /dev/* )
네트워크 어댑터, LCD 디스플레이, 오디오, 터미널, 키보드, 하드디스크, 플로피디스크, 프린터 등의 주변 장치
디바이스의 구동에 필요한 프로그램, 즉 디바이스 드라이버가 필수적으로 요구됨
Device Driver( *ko )
실제 장치 부분을 추상화 시켜 사용자 프로그램이 정형화된 인터페이스를 통해 디바이스를 접근할 수 있도록 해주는 프로그램
디바이스 관리에 필요한 정형화된 인터페이스 구현에 요구되는 함수와 자료구조의 집합체
표준적으로 동일 서비스 제공을 목적으로 커널의 일부분으로 내장
응용 프로그램이 하드웨어를 제어할 수 있도록 인터페이스 제공
하드웨어 독립적인 프로그램을 작성할 수 있도록 한다.
리눅스 디바이스 드라이버
사용자 관점에서의 디바이스 드라이버사용자는 디바이스 자체에 대한 정보를 알 필요가 없다.
device는 하나의 파일로 인식된다.
파일에 대한 접근을 통하여 real device에 접근 가능
리눅스에서의 디바이스리눅스에서는 디바이스는 특별한 파일로 취급되고, 엑세스가 가능하다.
사용자(응용 프로그램)은 file operation을 적용할 수 있다.
각 디바이스는 Major Number와 Minor Number를 가진다.
Major number 디바이스 장치 구분
Minor number 같은 종류의 디바이스들을 구분
디바이스 드라이버 종류
Device Driver 종류 | 설명 | 등록 함수명 |
문자 드라이버 (char) | device를 파일처럼 접근하여 직접 read/write 수행 data 형태는 stream 방식으로 전송 (ex) console, keybord, serial port driver 등 | register_chrdev() |
블록 드라이버 (block) | disk와 같은 file system을 기반으로 block 단위로 데이터를 read/write (ex) hard disk, CD-ROM driver, floppy disk | register_blkdev() |
네트워크 드라이버 (network) | network의 물리계층과 frame 단위의 데이터 송수신 (ex) Ethernet device driver | register_netdev() |
문자 디바이스(Char Device)
자료의 순차성을 지닌 장치
버퍼 캐쉬를 사용하지 않음
장치의 raw data를 사용자에게 제공
Terminal, Serial/Parallel, Keyboard, Sound Card, Scanner, Printer 등
블록 디바이스(Block Device)
random access 가능
블록 단위의 입출력이 가능한 장치
버퍼 캐쉬에 의한 내부 장치 표현
파일 시스템에 의해 mount 되어 관리되는 장치
디스크, RAM dis, CD-ROM 등
네트워크 디바이스(Network Device)
대응하는 장치파일이 없다.
네트워크 통신을 통해 패킷을 송수신하는 장치
응용프로그램과 통신 표준 파일 시스템 관련 호출 대신에 socket()이나 bind()등의 시스템 호출
Ethernet, PPP, ATM, ISDN 등
디바이스 드라이버의 Major & Minor Number
Major Number커널에서 디바이스 드라이버를 구분/연결하는데 사용
같은 디바이스 종류를 지칭 1Byte(0-255 사이의 값)
Minor Number디바이스 드라이버 내에 장치를 구분하기 위해 사용
각 디바이스의 부가적인 정보를 나타냄 2Byte
하나의 디바이스 드라이버가 여러 개의 디바이스 제어 가능
Device Driver Structure